WordPress – matoken's blog https://matoken.org/blog Is there no plan B? Tue, 31 Dec 2024 21:06:28 +0000 ja hourly 1 https://wordpress.org/?v=6.9 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg WordPress – matoken's blog https://matoken.org/blog 32 32 Bufferを経由してold TwitterへWordPress投稿を通知 https://matoken.org/blog/2024/12/31/wp-to-buffer/ https://matoken.org/blog/2024/12/31/wp-to-buffer/#respond Tue, 31 Dec 2024 09:18:53 +0000 https://matoken.org/blog/?p=4315

このweblogをold Twitterへの投稿をTwitter API利用がBANされてIFTTTに切り替え,Twitterの規約変更からIFTTT有料化でseleniumを使って投稿するように.しかし回線のせいか失敗することのほうがが多いです.ということで最近はBufferを利用しています.

Bufferのwebインターフェイスを起動して投稿をするのに回線が細いと数分かかり面倒.拡張機能を使うと2回目以降キャッシュが利いていると結構さくっと投稿できていい感じです.

更に楽にするようAPIを叩いてBufferに渡すコマンドを書こうかと思いましたがどうも2019年にBuffer APIの受付は終わってしまったようです.
そこで「WP to Buffer」というWordPress pluginを試してみました.

WordPress pluginページからWP to Bufferを導入,有効化,自動更新も有効化しました.
WP to Bufferの「Settings」の「Authentication」でBufferと連携します.
「投稿」→「Defaults」の「Publish」の右上の「Enabled」にチェックが付いている状態で投稿内容を設定します.とりあえず規定値のままで.
「Publish」の右隣の「Update」の「Enabled」はチェックを外してblog更新時には投稿しないようにしました.

投稿タブ左側にBuffer連携済のSNSが表示されるので,連携したいSNSを押して「Account Enabled」にチェックを付けます.

WP to Buffer

これで恐らく投稿時にチェックを付けたSNSにBuffer経由で投稿されるようになったと思います.
このエントリがテストです,

WP to Bufferに課金してProにUpgradeすると便利な機能が色々と使えるようになるようです.

しかしここ1月のt.coからのアクセスを確認してみると2件なのでそもそもTwitter連携をする意味はあまりない気がしてきました…….

追記)

こんな感じでBufferのQueueに登録され,順次投稿されるようです.WP to BufferをProにするとこの辺りの投稿タイミングも指定できそうです.(未確認)

Buffer Queue
Buffer to Twitter

]]>
https://matoken.org/blog/2024/12/31/wp-to-buffer/feed/ 0
WordPressをTwo-Factorで2要素認証を有効にする https://matoken.org/blog/2022/08/10/enable-wordpress-for-two-factor-authentication-with-two-factor/ https://matoken.org/blog/2022/08/10/enable-wordpress-for-two-factor-authentication-with-two-factor/#respond Wed, 10 Aug 2022 12:58:03 +0000 http://matoken.org/blog/?p=3763

このサイトは現在WordPressで管理されています.メジャーなアプリケーションなので攻撃も多いです.パスワードを少し長く二十数文字にしていますが少し不安.ということで多要素認証を使うことにしました.

一般的なTOTPとバックアップコードに対応しているものを探してみました.

TOTPで検索すると沢山出てきます.よく使われていそうなTwo-Factor を試してみます.

WordPressにログインした状態で,「サイトネットワーク管理者」→「プラグイン」でプラグインページに移動.
「新規追加」を押してプラグイン検索画面に遷移するのでキーワードに「TOTP」と入れて検索して「Two-Factor」を「今すぐインストール」ボタンで導入.導入が終わるとボタンが「ネットワークで有効化」になるのでこれも押して有効にします.

自サイトのPluginページで「Two Factor」が有効になっているのを確認,「ユーザー」→「あなたのプロフィール」の「Two-Factor 設定」でTOTPのコードを自分の利用しているアプリに登録してコードを登録して有効にします.TOTPの他にメールとバックアップコード(保存しておきます)も有効にしました.

wordpress 2fa setting01
wordpress 2fa setting02
wordpress 2fa login

別のブラウザでTOTPとメール,バックアップコードでログインできるのを確認.とりあえずOKそうです.

TOTPの計算にはoathtoolを使った自作scriptを利用しています.KEYは暗号化して実行時に一時的に復号しています.

$ oathtool --totp -b FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
346419
$ 2auth-cli.sh blog
Password:
matoken@matoken.org/blog : 590604

パスワードのみよりは安心になったかな?

Note
管理画面をlocalhostのみアクセス可能にしてポート転送にしてしまってもいいかな?
環境
$ dpkg-query -W wordpress
wordpress       5.0.15+dfsg1-0+deb10u1
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10
$ arch
x86_64
]]>
https://matoken.org/blog/2022/08/10/enable-wordpress-for-two-factor-authentication-with-two-factor/feed/ 0
WordPressのページ分けメモ✍ https://matoken.org/blog/2021/04/07/wordpress-split-page/ https://matoken.org/blog/2021/04/07/wordpress-split-page/#respond Wed, 07 Apr 2021 13:35:12 +0000 http://matoken.org/blog/?p=3207

ページが長くなったり,画像を多用するとWordPressのトップページが重くなります.
確か以前は編集画面に分割する機能が合ったはずと思ったのですが見当たりません.恐らく編集画面を変更すればでてくると思いますがよくわかりません.少し調べてみました.

「続きを読む」でトップページから隠す

以下のページを見ると, <!--more-→ を書くとそこから下は「続きを読む」を押すか,個別ページに行かないと表示されなくなるようです.↑の 「続きを読む」でトップページから隠す の上で分割しています.

リンクの文字列は既定値では「続きを読む」ですが, <!--more 任意のテキスト-→ のようにして任意の文字列に変更することも出来るようです.

ページ分割

これは自分ではあまり使う機会がないかなと思っていますが,ページ分割も出来るようです.

ページ内に <!‐‐nextpage‐‐> を挟むとそこでページが分割でされるようです.
複数挟むとその都度ページ分割されます.

AutoPagerizeの出番です??

ちなみにページ分けしたエントリーを1ページで読むことが出来るリンクとページを作ってくれるプラグインもあるようです.(動作未確認)

環境

$ dpkg-query -W wordpress*
wordpress       5.0.11+dfsg1-0+deb10u1
wordpress-l10n  5.0.11+dfsg1-0+deb10u1
wordpress-shibboleth    1.8-1
wordpress-theme-twentynineteen  5.0.11+dfsg1-0+deb10u1
wordpress-xrds-simple   1.2-1
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10
$ arch
x86_64
]]>
https://matoken.org/blog/2021/04/07/wordpress-split-page/feed/ 0
WordPress Disqus Pluginのエラーを修正 https://matoken.org/blog/2018/01/09/fix-wordpress-disqus-plugin-erro/ https://matoken.org/blog/2018/01/09/fix-wordpress-disqus-plugin-erro/#respond Tue, 09 Jan 2018 14:16:05 +0000 http://matoken.org/blog/?p=1759

このblogの下の方にこんなエラーが出てコメントのフォームが出てきません.
hostのOSをDebian jessieからDebian stretchにdist-upgradeしてWordPressのVersionが上がったせいでしょう.

4.1+dfsg-1+deb8u15 → 4.7.5+dfsg-2+deb9u1

Notice: get_currentuserinfo の使用はバージョン 4.5.0 から非推奨になっています! 代わりに wp_get_current_user() を使ってくださ
い。 in /usr/share/wordpress/wp-includes/functions.php on line 3830

spamが酷くてDisqusのコメントシステムをつかっているのですがそれがコケているような感じです.
Plugin の version が古いのかと確認してみると最新の 2.87

とりえずエラーメッセージのとおり修正したら動きました.

diff

$ sudo -u www-data diff -u plugins/disqus-comment-system/disqus.php.org plugins/disqus-comment-system/disqus.php
--- plugins/disqus-comment-system/disqus.php.org        2017-10-04 06:16:02.520645362 +0900
+++ plugins/disqus-comment-system/disqus.php    2018-01-08 02:00:35.729022200 +0900
@@ -1382,7 +1382,7 @@
         return array();
     }
     global $current_user, $dsq_api;
-    get_currentuserinfo();
+    wp_get_current_user();
     if ($current_user->ID) {
         $avatar_tag = get_avatar($current_user->ID);
         $avatar_data = array();

利用者多いしDisqus公式のものなので別のもっといい方法がある気がします.

]]>
https://matoken.org/blog/2018/01/09/fix-wordpress-disqus-plugin-erro/feed/ 0
WordPress へのspam 投稿をしたことのあるIP を拒否するようにした https://matoken.org/blog/2015/06/11/wordpress-spam-ip-deny-list/ https://matoken.org/blog/2015/06/11/wordpress-spam-ip-deny-list/#respond Thu, 11 Jun 2015 00:01:25 +0000 http://matoken.org/blog/?p=810

最近WordPress へのコメントとトラックバックスパムが酷くなってきました。URL が含まれている物は承認が必要なようにしているのですが面倒です。このときにスパムはスパムだと手動で振り分けをしているので振り分けたものからIP を抜き出してアクセス制限を掛けるとましにならないかと設定してみました。

データベースから該当IP を抜き出す

MySQL からスパムを指定したIP の一覧は以下のようにして取得出来そうです。

$ cat /etc/wordpress/spamcommentip.sql
SELECT comment_author_IP FROM wordpress.wp_comments WHERE comment_approved='spam'
$ /usr/bin/mysql -umy -p < /etc/wordpress/spamcommentip.sql | /usr/bin/sort -n | /usr/bin/uniq -c| sort -n|cut -c-7|uniq -c
     81       1
     31       2
     26       3
     12       4
      8       5
      9       6
      4       7
      9       8
      1       9
      1      10
      3      11
      2      12
      3      13
      1      14
      1      15
      1      18
      4      20
      1      22
      1      23
      1      24
      1      26
      1      43
      1      82
      1     119
      1     146
      1     394

自動化したいので、MySQL にアクセスする為のMySQL の設定ファイルと、IP を抜き出すsqlファイルを用意します。

  • MySQL アクセスの為の設定ファイル

    $ cd /etc/wordpress
    $ umask 077
    $ sudo touch .my.conf
    $ sudo chown www-data.root .my.conf
    $ vi .my.conf
    cat .my.conf 
    user=wp
    password=XXXXXXXXXXXXXX
    database=wordpress
    
  • IP を抜き出す為のsqlファイル

    $ sudo vi /etc/wordpress/spamcommentip.sql
    $ cat $ cat /etc/wordpress/spamcommentip.sql
    SELECT comment_author_IP FROM wordpress.wp_comments WHERE comment_approved='spam'
    

以下のようにしてIP の一覧が取得出来るようになりました。

$ /usr/bin/mysql --defaults-file=/etc/wordpress/.my.conf < /etc/wordpress/spamcommentip.sql

apache httpd の .htaccess で指定IPアドレスからの WordPress のコメント投稿とトラックバックを制限

Debian のパッケージで WordPress を導入しているので導入パスは /usr/share/wordpress/ です。
設定ファイルは /etc/wordpress 以下です。
/usr/share/wordpress/.htaccess/etc/wordpress/htaccess のシンボリックリンクになっています。

アクセス制限をするには .htaccessdeny from ip address な感じで行けます。
さっきのIPの一覧取得時に並べ替えて同一IPをまとめて頭にdeny from を付けるようにします。

$ /usr/bin/mysql --defaults-file=/etc/wordpress/.my.conf < /etc/wordpress/spamcommentip.sql | /usr/bin/sort -n | /usr/bin/uniq | /bin/grep -v 'comment_author_IP' | /bin/sed "s/^/  deny from /"

あまり無いと思いますが、正しいIP アドレスを登録してしまっても本文が読めるようにコメントやトラックバックだけ制限しようと思います。コメント、トラックバックは次のwp-comments-post.php / wp-trackback.php を利用するようなのでこのファイルへのアクセスを制限します。
.htaccess の Files ディレクティブを利用して以下ような感じでいけそうです。

<Files ~ wp-comments-post.php|wp-trackback.php>
  deny from ip address
</Files>

動作確認は自分のIPアドレスを一時的に登録して行いました。blog本文にはアクセス出来てコメントURL は拒否されています。

% w3m -dump_head https://matoken.org/blog/blog/2015/06/09/facebook-pgp/|head -1
HTTP/1.0 200 OK
% w3m -dump_head https://matoken.org/blog/wp-comments-post.php|head -1
HTTP/1.1 403 Forbidden

cron を使って自動的に更新するようにする

IP list は外部ファイルにして読み込むようにすると便利そうですが、Include ディレクティブは .htaccess からは利用出来無いようなので分割ファイルを作って連結することにします。

  • /etc/wordpress/htaccess_base
    • 元のhtaccess
  • /etc/wordpress/htaccess_spamhead
    • Files ディレクティブの先頭
  • /etc/wordpress/htaccess_spamiplist
    • データベースから抜き出して作成した拒否IPリスト
  • /etc/wordpress/htaccess_spamtail
    • Files ディレクティブの末尾
  • /etc/wordpress/htaccess
    • 最終的に結合されて.htaccess のリンク元になるファイル

htaccess_base / htaccess_spamhead / htaccess_spamtail を用意します。

$ sudo cp -p /etc/wordpress/htaccess /etc/wordpress/htaccess_base
$ sudo sh -c "echo '<Files ~ wp-trackback.php|wp-comments-post.php>' > /etc/wordpress/htaccess_spamhead"
$ sudo sh -c "echo '</Files>' > /etc/wordpress/htaccess_spamtail"

htaccess_spamiplist / htaccess はcron で1時間毎に作成するようにします。

$ sudo -u www-data crontab -e
$ sudo -u www-data crontab -l
14 * * * *      /usr/bin/mysql --defaults-file=/etc/wordpress/.my.conf < /etc/wordpress/spamcommentip.sql | /usr/bin/sort -n | /usr/bin/uniq | /bin/grep -v 'comment_author_IP' | /bin/sed "s/^/  deny from /" > /etc/wordpress/htaccess_spamiplist && /bin/cat /etc/wordpress/htaccess-base /etc/wordpress/htaccess_spamhead /etc/wordpress/htaccess_spamiplist /etc/wordpress/htaccess_spamtail > /etc/wordpress/htaccess

これで1時間毎にWordPress 上でspam と判定したコメント/トラックバックの送信元IP からコメント/トラックバックを拒否するようになりました。
うまくいくといいのですが……。

追記)
設定して数日経ちましたが,spam激減しました!

]]>
https://matoken.org/blog/2015/06/11/wordpress-spam-ip-deny-list/feed/ 0
WordBench鹿児島に参加してきた https://matoken.org/blog/2014/09/13/wordbenchkagosima/ https://matoken.org/blog/2014/09/13/wordbenchkagosima/#respond Sat, 13 Sep 2014 11:20:29 +0000 http://matoken.org/blog/?p=638
  • [2014年9月] WordBench鹿児島 – WordBench鹿児島 | Doorkeeper
  • Twitter / 検索 – #wbkago
  • 先月から第二土曜日に毎月定例で行う予定でしたが,先月は台風で中止になっていました. そういえば明日だなWP でちょっとはまってネタも出来たしと思って参加申し込みをしたら補欠>< 数時間後に確認したら繰り上がっていました.盛況ですね.

    ユニマルの永田さんによる「universions」のお話

    universions というのは初めて知ったのですが,WordPressに特化した開発ツールになるのかな?独自のGUIのバージョン管理システムやchat/wiki/tasb管理,WordPress環境が1分で作れるなど. 逆にシェルから操作とかは出来無さそう?gitとかがわかる人向けではないとのこと. シェルの画面が苦手な人の取っ掛かりにいいのかもです.

    質問&相談をみんなで解決しましょう

    Doorkeeper での参加登録時に質問相談などを書くようになっていて,それを付箋に書いて貼ってアンカンファレンス形式でのディスカッションでした. 畑違いなので結構知らない言葉が飛び交っていて大変でしたが勉強になりました.

    次回

    次回はWB東京とかぶるので第2土曜から1週ずらして10/18(土)になるとのことでした. 興味のある方は以下の辺りをfollow しておくといいのかも.

    WP で嵌ったネタは発表してないしまたここにでも書きます.

    DP1M0442DP1M0443DP1M0444DP1M0445DP1M0446

    ]]>
    https://matoken.org/blog/2014/09/13/wordbenchkagosima/feed/ 0
    春の翻訳&ドキュメンテーション祭りに参加 https://matoken.org/blog/2014/05/17/wordpres-translation-festival/ https://matoken.org/blog/2014/05/17/wordpres-translation-festival/#respond Sat, 17 May 2014 13:29:50 +0000 http://matoken.org/blog/?p=516

    ということで参加してきました.WordPress はそんなに使ってないのですが(今はこのページともう一箇所だけ),普通にGettext での国際化のようなので最近翻訳してなくてコマンドとかも忘れてるし…てことで参加してきました.
    会場は301コワーキングスペース.
    IMGP9309
    こちらのビルの
    IMGP9311
    その名の通り301号室です.

  • 鹿児島のコワーキングスペース 301 サンマルイチ | 鹿児島中央駅から徒歩3分
  • 2014-05-17 12.44.13
    #準備中の写真しかとってなかったですorz
    翻訳対象はドキュメント,プラグイン,テーマなど.鹿児島では Theme My Login Login LockDown をターゲットにすることに.

    Theme My Login は .pot があるのでお手軽だったのですが, Login LockDown は.pot の作成からでした.

    作業の前にdebian/ubuntu 環境だと,関連パッケージは以下のような感じで導入できます.

    % sudo apt-get install gettext-base gettext poedit

    .pot を作成します.初め以下のようにしていたのですが, _e の行が拾えません.

    % xgettext —keyword=’_’ —language php —from-code=UTF-8 -o ./loginlockdown.pot find $PWD -name *.php -type f

    試行錯誤して最終的に以下のように —keyword を複数指定することで恐らく全て抽出出来ました.

    % xgettext —keyword=’__’ —keyword=’_e’ —language php —from-code=UTF-8 -o ./loginlockdown.pot find $PWD -name *.php -type f

    .pot から ja.po の作成は以下のようにして行いました.

    % msginit —locale ja_JP.UTF-8 —input=loginlockdown.pot

    初め —locale ja としていたのですが,これだと charset=CHARSET となって先ずそうだったので ja_JP.UTF-8 を指定するようにしました.これで, charset=UTF-8 になりました.

    後はPoedit で翻訳して保存すると自動的に ja.mo も作成されます.
    手動で mo を作る場合は, % msgfmt ja.po -o ja.mo で行けます.
    #ちなみに今回 Poedit に有料版があるのを知りました! http://poedit.net/pro/

    ここでまた問題.
    ja.mo の結果が反映されない><

    source を見るとそもそも load_plugin_textdomain() が呼ばれていなそう.試しに書き換えてみると .mo が反映されました!
    #.pot が作れるのになぜ!?

    Screenshot from 2014-05-23 13:06:11

    という辺りで今回は時間切れとなりました.
    別の方々が ja.po の翻訳をされていたのでそっちとマージするといい感じになりそうです.

    鹿児島会場の参加者は最終的に7人でした.
    そうそう!定期的にやりたいねって話になりました.次回は恐らく6/14(土)となりそうです.
    興味のある方は以下のFacebook Group をcheck!

    関連URL

    今回のハッシュタグ

    ]]>
    https://matoken.org/blog/2014/05/17/wordpres-translation-festival/feed/ 0
    Debian Squeeze にWP を試しに立ててみる https://matoken.org/blog/2012/08/30/debian-squeeze-wp/ https://matoken.org/blog/2012/08/30/debian-squeeze-wp/#respond Wed, 29 Aug 2012 22:38:05 +0000 http://matoken.org/blog/?p=7 IMGP8267

    ずっとblog 放置してて最近はGoogle+ やPukiwiki にメモしたりしてますがblog もたまに書きたくなって来ました.
    ということで,blog を立ち上げてみようかと思います.
    先ずはこのblog の為にWP を入れてみたエントリから.

    環境

    $ cat /etc/debian_version 
    6.0.5
    

    導入

    $ sudo apt-get install wordpress wordpress-l10n
    

    設定

    apache の設定

    $ cd /etc/apache2/sites-enabled
    $ sudo vi 004-matoken.org
    $ sudo git diff 004-matoken.org
    diff --git a/apache2/sites-enabled/004-matoken.org b/apache2/sites-enabled/004-matoken.org
    index df3c502..1c9f8b7 100644
    --- a/apache2/sites-enabled/004-matoken.org
    +++ b/apache2/sites-enabled/004-matoken.org
    @@ -14,6 +14,13 @@
                    allow from all
            </Directory>
    
    +       Alias /blog /usr/share/wordpress
    +       <directory /usr/share/wordpress>
    +               Options FollowSymLinks
    +               AllowOverride Limit Options FileInfo
    +               DirectoryIndex index.php
    +       </directory>
    +
            ErrorLog ${APACHE_LOG_DIR}/error-matoken.org.log
    
            # Possible values include: debug, info, notice, warn, error, crit,
    $ sudo /etc/init.d/apache2 restart
    

    db の作成

    DB 名 : wordpress
    DB User : wp
    DB Password : password

    $ mysql -uroot -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 7158
    Server version: 5.1.63-0+squeeze1 (Debian)
    
    Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> CREATE DATABASE wordpress;
    Query OK, 1 row affected (0.04 sec)
    
    mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wp@localhost IDENTIFIED BY 'password';
    Query OK, 0 rows affected (0.22 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.16 sec)
    
    mysql> EXIT
    Bye
    

    wordpress の設定

    $ cat /etc/wordpress/config-matoken.org.php
    <?php                                                                                                                                                 
    define('DB_NAME', 'wordpress');                                                                                                                       
    define('DB_USER', 'wp');                                                                                                                              
    define('DB_PASSWORD', 'password');                                                                                                                 
    define('DB_HOST', 'localhost');                                                                                                                       
    define('DB_CHARSET', 'utf8');                                                                                                                         
    define('DB_COLLATE', '');                                                                                                                             
    define ('WPLANG', 'ja');                                                                                                                              
    define('WP_HOME', 'https://matoken.org/blog');                                                                                                         
    define('AUTH_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');                                                                                                                                                         
    define('SECURE_AUTH_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');                                                                                                                                                  
    define('LOGGED_IN_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');                                                                                                                                                    
    define('NONCE_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
    ?>
    

    https://matoken.org/blog/ にアクセスして設定.

    Plugin の導入

    WordPress › Markdown on Save Improved « WordPress Plugins

    Markdown 記法が使えるようになるPlugin です.

    $ cd /tmp
    $ wget http://downloads.wordpress.org/plugin/markdown-on-save-improved.2.2.zip
    $ cd /usr/share/wordpress/wp-content/plugins
    $ sudo unzip /tmp/markdown-on-save-improved.2.2.zip
    

    管理画面の「プラグイン」から Markdown on Save Improved を有効化

    その他

    パーマリンク設定が有効にならない

    rewrite が無効になっているので有効にする

    $ sudo a2enmod rewrite
    Enabling module rewrite.
    Run '/etc/init.d/apache2 restart' to activate new configuration!
    $ sudo /etc/init.d/apache2 restart
    Restarting web server: apache2 ... waiting .
    
    ]]>
    https://matoken.org/blog/2012/08/30/debian-squeeze-wp/feed/ 0